/**
 * 给定一个 n×n 的二维矩阵matrix 表示一个图像。请你将图像顺时针旋转 90 度。

 你必须在 原地 旋转图像，这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。
 输入：matrix = [
 [1,2,3],
 [4,5,6],
 [7,8,9]
 ]
 输出：[
 [7,4,1],
 [8,5,2],
 [9,6,3]
 ]

 来源：力扣（LeetCode）
 链接：https://leetcode-cn.com/problems/rotate-image
 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */

// 使用另外一个空间放置
function transMax(matrix) {
    let n = matrix.length, queue = []
    for (let i = 0; i < n; i++)
        for (let j = 0; j < n; j++)
            queue.push(matrix[i][j])
    for (let j = n; j--;)
        for (let i = 0; i < n; i++)
            matrix[i][j] = queue.shift()
    return matrix
}

const matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]
console.log(transMax(matrix));


// 不使用额外的空间。 或者， 使用常量级的空间
function T(matrix) {
    let n = matrix.length
    for (let i = 0; i < n >> 1; i++)
        for (let j = i; j < n - 1 - i; j++) {
            let tmp = matrix[i][j]
            matrix[i][j] = matrix[n - 1 - j][i]
            matrix[n - 1 - j][i] = matrix[n - 1 - i][n - 1 - j]
            matrix[n - 1 - i][n - 1 - j] = matrix[j][n - 1 - i]
            matrix[j][n - 1 - i] = tmp
        }
}
